package edu.ccut.saturn.manager.bundles.core;

import java.util.List;
import java.util.Map;

import edu.ccut.saturn.component.DefaultComponent;
import edu.ccut.saturn.component.IDataInfo;
import edu.ccut.saturn.component.IDataItem;
import edu.ccut.saturn.component.IParameterContext;
import edu.ccut.saturn.component.IValidateInfo;
import edu.ccut.saturn.component.IValidateUseInfo;
import edu.ccut.saturn.component.SaturnDataManager;

public class GetDataItemValidateDetail extends DefaultComponent {
	@Override
	public void execute(IParameterContext parameterContext) throws Exception {
		
		String fullKey = (String)parameterContext.getParameterValue(0);
		String saturnItemName = (String)parameterContext.getParameterValue(1);
		String validateInfoFullkey = (String)parameterContext.getParameterValue(2);
		
		IDataInfo dataInfo = SaturnDataManager.getInstance().getSaturnDataInfo(fullKey);
		IDataItem dataItem = dataInfo.getDataItem(saturnItemName);
		IValidateUseInfo validateUseInfo = dataItem.getValidateUseInfo();
		List<IValidateInfo> validateInfos  = null;
		
		if(validateUseInfo != null){
			validateInfos = validateUseInfo.getValidateInfos();
		}
		
		for(IValidateInfo validateInfo : validateInfos){
			if(validateInfo.getValidateInfoFullkey().equals(validateInfoFullkey)){
				List<String> eventList = validateInfo.getEventInfos();				
				List<String> argList = validateInfo.getArgs();				
				String validateName = validateInfo.getName();
				String description = validateInfo.getDescription();
				String validateType = validateInfo.getValidateType();
				Map<String, String> errorMap = validateInfo.getErrorInfos();
												
				parameterContext.setParameter(3, eventList);	
				parameterContext.setParameter(4, argList);
				parameterContext.setParameter(5, validateName);
				parameterContext.setParameter(6, description);
				parameterContext.setParameter(7, validateType);
				parameterContext.setParameter(8, errorMap);
			}
		}
	}
}